package com.swak.entity;

import java.io.Serializable;
import java.time.LocalDateTime;

import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * 最简单的事件
 * 
 * @author 618lf
 * @param <PK>
 */
@Getter
@Setter
@Accessors(chain = true)
@SuppressWarnings("unchecked")
public class EventDTO implements Serializable {

	private static final long serialVersionUID = 1L;

	/**
	 * 事件的ID
	 */
	private Object id;

	/**
	 * 事件的类型
	 */
	private Byte type;

	/**
	 * 事件的主体
	 */
	private Object data;

	/**
	 * 事件的时间
	 */
	private LocalDateTime date;

	public <T> T getId() {
		return (T) id;
	}

	public <T> T getData() {
		return (T) data;
	}

	public <T> T as() {
		return (T) this;
	}

	public static EventDTO of() {
		return new EventDTO();
	}
}